package com.bbva.itradecomex.converter;

import java.util.List;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import javax.faces.convert.FacesConverter;

import org.apache.log4j.Logger;
import org.springframework.web.jsf.FacesContextUtils;

import com.bbva.itradecomex.bo.iface.ConsultaComunBO;
import com.bbva.itradecomex.bo.impl.ConsultaComunBOImpl;
import com.bbva.itradecomex.controller.ComunController;
import com.bbva.itradecomex.domain.Banco;
import com.bbva.itradecomex.domain.Pais;

@FacesConverter(value="bancoConverter")
public class BancoConverter implements Converter{

	private static final Logger log = Logger.getLogger(BancoConverter.class);

	@Override
	public Object getAsObject(FacesContext arg0, UIComponent arg1, String submittedValue)
			throws ConverterException {
		ComunController comunController = (ComunController)FacesContextUtils.getWebApplicationContext(arg0)
														.getBean("comunController");
		Pais pais = comunController.getPaisSeleccionado();
		
		ConsultaComunBO consultaComunBO = (ConsultaComunBOImpl)FacesContextUtils.getWebApplicationContext(arg0)
										.getBean("consultaComunBOImpl");
		List<Banco> listBanco = null;
		try {
			listBanco = consultaComunBO.getListBusquedaBanco(pais.getCodPais(), submittedValue.trim());
		} catch (Exception e) {
			e.printStackTrace();
			log.error(e.getMessage(),e);
		}

		Banco banco = null;
		
		if(listBanco != null && listBanco.size() > 0){
			banco = listBanco.get(0);
		}
		
		return banco;
	}

	@Override
	public String getAsString(FacesContext arg0, UIComponent arg1, Object value)
			throws ConverterException {
		Banco banco = new Banco();
		banco = (Banco) value;
		return banco.getDescBanco1();
	}
}
